home *** CD-ROM | disk | FTP | other *** search
/ Computer Inter@ctive 16 / Computer Interactive cdrom 16 - dic 98.iso / zdnetit / content / CLASSBLD.ZIP / Include / CB_ValueTreeOwned.h < prev   
Encoding:
C/C++ Source or Header  |  1998-03-06  |  4.1 KB  |  128 lines

  1. #ifndef CB_VALUETREE_OWNED_H
  2. #define CB_VALUETREE_OWNED_H
  3.  
  4. #include "CB_ValueTree.h"
  5.  
  6. // defines for include files
  7. #define RELATION_VALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  8. private:\
  9.     ClassTo* _first##NameTo;\
  10.     int _count##NameTo;\
  11. \
  12. protected:\
  13. \
  14. public:\
  15.     void Add##NameTo(ClassTo* item);\
  16.     void Remove##NameTo(ClassTo* item);\
  17.     void DeleteAll##NameTo();\
  18.     void Replace##NameTo(ClassTo* item, ClassTo* newItem);\
  19.     ClassTo* GetFirst##NameTo();\
  20.     ClassTo* GetLast##NameTo();\
  21.     ClassTo* GetNext##NameTo(ClassTo* pos);\
  22.     ClassTo* GetPrev##NameTo(ClassTo* pos);\
  23.     int Get##NameTo##Count();\
  24.     ITERATOR_MULTI_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  25.  
  26. #define RELATION_NOFILTER_VALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  27. private:\
  28.     ClassTo* _first##NameTo;\
  29.     int _count##NameTo;\
  30. \
  31. protected:\
  32. \
  33. public:\
  34.     void Add##NameTo(ClassTo* item);\
  35.     void Remove##NameTo(ClassTo* item);\
  36.     void DeleteAll##NameTo();\
  37.     void Replace##NameTo(ClassTo* item, ClassTo* newItem);\
  38.     ClassTo* GetFirst##NameTo();\
  39.     ClassTo* GetLast##NameTo();\
  40.     ClassTo* GetNext##NameTo(ClassTo* pos);\
  41.     ClassTo* GetPrev##NameTo(ClassTo* pos);\
  42.     int Get##NameTo##Count();\
  43.     ITERATOR_NOFILTER_MULTI_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  44.  
  45. #define RELATION_VALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  46.     RELATION_VALUETREE_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  47.  
  48. // defines implementation
  49. #define INIT_VALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  50.    INIT_VALUETREE_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  51.  
  52. #define EXIT_VALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  53.     { for (ClassTo* item = GetFirst##NameTo(); item; item = GetFirst##NameTo())\
  54.           delete item; }
  55.  
  56. #define REPLACE_VALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  57.     REPLACE_VALUETREE_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  58.  
  59. #define INIT_VALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  60.     _ref##NameFrom = (ClassFrom*)0;\
  61.     _parent##NameFrom = (ClassTo*)0;\
  62.     _left##NameFrom = (ClassTo*)0;\
  63.     _right##NameFrom = (ClassTo*)0;\
  64.     _sibling##NameFrom = (ClassTo*)0;\
  65.     assert(p##NameFrom);\
  66.     p##NameFrom->Add##NameTo(this);
  67.  
  68. #define EXIT_VALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  69.     EXIT_VALUETREE_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  70.  
  71. #define REPLACE_VALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  72.     _ref##NameFrom = (ClassFrom*)0;\
  73.     _parent##NameFrom = (ClassTo*)0;\
  74.     _left##NameFrom = (ClassTo*)0;\
  75.     _right##NameFrom = (ClassTo*)0;\
  76.     _sibling##NameFrom = (ClassTo*)0;\
  77.     pOld->_ref##NameFrom->Replace##NameTo(pOld, this);
  78.  
  79. #define METHODS_VALUETREE_OWNED_ACTIVE(member, ClassFrom, NameFrom, ClassTo, NameTo) \
  80. void ClassFrom##::Add##NameTo(ClassTo* item)\
  81. {\
  82.     METHOD_VALUETREE_ADD(member, ClassFrom, NameFrom, ClassTo, NameTo) \
  83. }\
  84. \
  85. void ClassFrom##::Remove##NameTo(ClassTo* item)\
  86. {\
  87.     METHOD_VALUETREE_REMOVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  88. }\
  89. \
  90. void ClassFrom##::DeleteAll##NameTo()\
  91. {\
  92.     METHOD_VALUETREE_DELETEALL(ClassFrom, NameFrom, ClassTo, NameTo) \
  93. }\
  94. \
  95. void ClassFrom##::Replace##NameTo(ClassTo* item, ClassTo* newItem)\
  96. {\
  97.     METHOD_VALUETREE_REPLACE(member, ClassFrom, NameFrom, ClassTo, NameTo) \
  98. }\
  99. \
  100. ClassTo* ClassFrom##::GetFirst##NameTo()\
  101. {\
  102.     METHOD_VALUETREE_GETFIRST(ClassFrom, NameFrom, ClassTo, NameTo) \
  103. }\
  104. \
  105. ClassTo* ClassFrom##::GetLast##NameTo()\
  106. {\
  107.     METHOD_VALUETREE_GETLAST(ClassFrom, NameFrom, ClassTo, NameTo) \
  108. }\
  109. \
  110. ClassTo* ClassFrom##::GetNext##NameTo(ClassTo* pos)\
  111. {\
  112.     METHOD_VALUETREE_GETNEXT(ClassFrom, NameFrom, ClassTo, NameTo) \
  113. }\
  114. \
  115. ClassTo* ClassFrom##::GetPrev##NameTo(ClassTo* pos)\
  116. {\
  117.     METHOD_VALUETREE_GETPREV(ClassFrom, NameFrom, ClassTo, NameTo) \
  118. }\
  119. \
  120. int ClassFrom##::Get##NameTo##Count()\
  121. {\
  122.     METHOD_VALUETREE_GETCOUNT(ClassFrom, NameFrom, ClassTo, NameTo) \
  123. }
  124.  
  125. #define METHODS_VALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  126.  
  127. #endif
  128.